home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Aminet 30
/
Aminet 30 (1999)(Schatztruhe)[!][Apr 1999].iso
/
Aminet
/
dev
/
lang
/
SmallEiffel.lha
/
SmallEiffel
/
bin_c
/
compile_to_jvm32.c
< prev
next >
Wrap
C/C++ Source or Header
|
1998-12-22
|
26KB
|
1,278 lines
/*
-- ANSI C code generated by :
-- SmallEiffel The GNU Eiffel Compiler -- Release (- 0.79) --
-- Copyright (C), 1994-98 - LORIA - UHP - CRIN - INRIA - FRANCE --
-- Dominique COLNET and Suzanne COLLIN - colnet@loria.fr --
-- http://www.loria.fr/SmallEiffel --
*/
#include "compile_to_jvm.h"
void r261jvm_return_code(T261* C){
X52jvm_return_code((C)->_run_type/*8*/);
}
void r261jvm_target_descriptor_in(T261* C,T0* a1){
X52jvm_target_descriptor_in((C)->_run_type/*8*/,a1);
}
void r261jvm_xastore(T261* C){
X52jvm_xastore((C)->_run_type/*8*/);
}
/*No:TYPE_LIKE_CURRENT.is_like_argument*/
T2 r261jvm_stack_space(T261* C){
T2 R=0;
/*[IF*/
if(r261is_double(C)){
R=2;
}
else{
R=1;
}
/*FI]*/
return R;
}
T6 r261is_double(T261* C){
T6 R=0;
R=X52is_double((C)->_run_type/*8*/);
return R;
}
T2 r261jvm_expanded_from_reference(T0* a1){
T2 R=0;
return R;
}
T0* r264jvm_root_class(void){
if(fBC12jvm_root_class==0){
fBC12jvm_root_class=1;
{T7*n=malloc(sizeof(*n));
*n=M7;
r7make(n,12);
oBC12jvm_root_class=(T0*)n;
}
r7copy(((T7*)oBC12jvm_root_class),((T24*)(oBC12jvm))->_output_name/*0*/);
r7extend(((T7*)oBC12jvm_root_class),'\57');
r7append(((T7*)oBC12jvm_root_class),((T0*)ms13_1732));
}
return oBC12jvm_root_class;}
/*No:TYPE_ARRAY.start_position*/
void r264jvm_initialize_local(T2 a1){
/*[IRF3.4opcode_aconst_null*/r28opcode((T28*)(oBC12code_attribute),1,1);
/*]*/
/*[IRF3.6jvm_write_local*/{T2 b1=a1;
r28opcode_astore((T28*)(oBC12code_attribute),b1);
}/*]*/
}
/*No:TYPE_ARRAY.run_type_memory*/
/*No:TYPE_ARRAY.used_as_reference*/
/*No:TYPE_ARRAY.is_user_expanded*/
T2 r264id(T264* C){
T2 R=0;
R=((T23*)(r264run_class(C)))->_id/*4*/;
return R;
}
/*No:TYPE_ARRAY.is_pointer*/
/*No:TYPE_ARRAY.jvm_check_class_invariant*/
T0* r264to_runnable(T264* C,T0* a1){
T0* R=NULL;
T0* _et2=NULL;
T0* _et1=NULL;
_et1=/*(IRF4.6array_of*/r265first(((T265*)((C)->_generic_list/*8*/)))/*)*/;
_et2=X52to_runnable(_et1,a1);
/*[IF*/
if((_et2)==((void*)(NULL))){
/*[IF*/
if((_et2)!=((void*)(NULL))){
r21add_position(X52start_position(_et2));
}
/*FI]*/
r21add_position(X52start_position(_et1));
/*[IRF3.6fatal_error*/{T0* b1=((T0*)ms13_28959);
r21fatal_error((T21*)(oBC12eh),b1);
}/*]*/
}
/*FI]*/
/*[IF*/
if(((C)->_run_type_memory/*16*/)==((void*)(NULL))){
R=(T0*)C;
/*[IF*/
if((X52run_type(_et2))==((void*)(_et1))){
C->_run_type_memory=(T0*)C;
}
else{
{T264*n=malloc(sizeof(*n));
*n=M264;
r264final(n,(C)->_base_class_name/*4*/,X52run_type(_et2));
C->_run_type_memory=(T0*)n;
}
}
/*FI]*/
}
else if((_et2)==((void*)(_et1))){
R=(T0*)C;
}
else{
{T264*n=malloc(sizeof(*n));
*n=M264;
r264with(n,(C)->_base_class_name/*4*/,(C)->_written_mark/*12*/,_et2);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
void r264load_basic_features(T264* C){
T0* _rc=NULL;
T0* _rf=NULL;
T0* _et=NULL;
_et=/*(IRF4.6array_of*/r265first(((T265*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if(X52is_expanded(_et)){
r23set_at_run_time((T23*)(X52run_class(_et)));
}
/*FI]*/
_rc=r264run_class(C);
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_11896));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2840));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_2855));
_rf=r23get_feature_with(((T23*)_rc),((T0*)ms14_8925));
}
T0* r264run_class(T264* C){
T0* R=NULL;
/*[IF*/
if(r264is_run_type(C)){
R=r22run_class(r264run_type(C));
}
/*FI]*/
return R;
}
void r264standard_jvm_check_class_invariant(T264* C){
/*[IF*/
if(r76invariant_check((T76*)(oBC12run_control))){
r23jvm_check_class_invariant((T23*)(r264run_class(C)));
}
/*FI]*/
}
/*No:TYPE_ARRAY.is_like_current*/
/*No:TYPE_ARRAY.is_bit*/
/*No:TYPE_ARRAY.us_storage*/
/*No:TYPE_ARRAY.jvm_write_local*/
T0* r264smallest_ancestor(T264* C,T0* a1){
T0* R=NULL;
T0* _array_of3=NULL;
T0* _array_of2=NULL;
T0* _array_of1=NULL;
T0* _rto=NULL;
_rto=X52run_type(a1);
/*[IF*/
if(X52is_array(_rto)){
_array_of1=X52run_type(/*(IRF4.6array_of*/r265first(((T265*)((C)->_generic_list/*8*/)))/*)*/);
_array_of2=r265first((T265*)(X52generic_list(_rto)));
_array_of3=X52smallest_ancestor(_array_of1,_array_of2);
/*[IF*/
if((_array_of3)==((void*)(_array_of1))){
R=(T0*)C;
}
else if((_array_of3)==((void*)(_array_of2))){
R=a1;
}
else{
{T264*n=malloc(sizeof(*n));
*n=M264;
r264make(n,NULL,_array_of3);
R=(T0*)n;
}
}
/*FI]*/
}
else{
R=X52smallest_ancestor(_rto,(T0*)C);
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.fatal_error*/
T0* r264run_time_mark(T264* C){
T0* R=NULL;
/*[IF*/
if(r264is_run_type(C)){
R=X52written_mark(r264run_type(C));
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_expanded*/
/*No:TYPE_ARRAY.jvm_if_x_eq*/
/*No:TYPE_ARRAY.jvm_xnewarray*/
/*No:TYPE_ARRAY.jvm_push_local*/
/*No:TYPE_ARRAY.is_like_feature*/
/*No:TYPE_ARRAY.fz_dot*/
T6 r264is_a(T264* C,T0* a1){
T6 R=0;
/*[IF*/
if((r264run_class(C))==((void*)(X52run_class(a1)))){
R=1;
}
else if(X52is_array(a1)){
R=X52is_a(/*(IRF4.6array_of*/r265first(((T265*)((C)->_generic_list/*8*/)))/*)*/,r265first((T265*)(X52generic_list(a1))));
/*[IF*/
if(!(R)){
/*[IRF3.6extend*/{T3 b1='\40';
r7extend((T7*)(oBC21explanation),b1);
}/*]*/
}
/*FI]*/
}
else if(r63is_subclass_of((T63*)(r264base_class(C)),X52base_class(a1))){
/*[IF*/
if(X52is_generic(a1)){
R=r63is_a_vncg((T63*)(r264base_class(C)),(T0*)C,a1);
}
else{
R=1;
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(!(R)){
r21add_type((T0*)C,((T0*)ms13_17730));
r21add_type(a1,((T0*)ms13_47));
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_character*/
/*No:TYPE_ARRAY.written_mark*/
/*No:TYPE_ARRAY.jvm_convert_to*/
void r264make(T264* C,T0* a1,T0* a2){
{T70*n=malloc(sizeof(*n));
*n=M70;
r70make(n,((T0*)ms14_1990),a1);
C->_base_class_name=(T0*)n;
}
C->_generic_list=se_ma265(1,
a2);
r7copy((T7*)(oBC264tmp_written_mark),((T0*)ms14_1990));
r7extend((T7*)(oBC264tmp_written_mark),'\133');
r7append((T7*)(oBC264tmp_written_mark),X52written_mark(a2));
r7extend((T7*)(oBC264tmp_written_mark),'\135');
C->_written_mark=r86item(oBC264tmp_written_mark);
}
/*No:TYPE_ARRAY.is_array*/
/*No:TYPE_ARRAY.fz_bga*/
T2 r264jvm_push_default(void){
T2 R=0;
/*[IRF3.4opcode_aconst_null*/r28opcode((T28*)(oBC12code_attribute),1,1);
/*]*/
R=1;
return R;
}
/*No:TYPE_ARRAY.is_dummy_expanded*/
/*No:TYPE_ARRAY.generic_list*/
T0* r264base_class(T264* C){
T0* R=NULL;
T0* _bcn=NULL;
_bcn=(C)->_base_class_name/*4*/;
/*[IF*/
if((_bcn)!=((void*)(NULL))){
R=r70base_class(((T70*)_bcn));
}
else{
/*[IRF3.6append*/{T0* b1=((T0*)ms52_37098);
r7append((T7*)(oBC21explanation),b1);
}/*]*/
r21add_type((T0*)C,((T0*)ms13_47));
r21print_as_fatal_error((T21*)(oBC12eh));
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.jvm_if_x_ne*/
/*No:TYPE_ARRAY.base_class_name*/
/*No:TYPE_ARRAY.fz_jvm_root*/
/*No:TYPE_ARRAY.us_capacity*/
void r264jvm_standard_is_equal(T264* C){
T0* _wa=NULL;
T0* _rc=NULL;
_rc=r264run_class(C);
_wa=r23writable_attributes(((T23*)_rc));
r24std_is_equal(_rc,_wa);
}
/*No:TYPE_ARRAY.is_formal_generic*/
T6 r264is_a_in(T264* C,T0* a1,T0* a2){
T6 R=0;
T0* _ct=NULL;
T0* _t2=NULL;
T0* _t1=NULL;
/*[IF*/
if(((C)->_written_mark/*12*/)==((void*)(X52written_mark(a1)))){
R=1;
}
else{
_ct=(((T23*)a2))->_current_type/*0*/;
_t1=r264to_runnable(C,_ct);
_t2=X52to_runnable(a1,_ct);
/*[IF*/
if((X52run_time_mark(_t1))==((void*)(X52run_time_mark(_t2)))){
R=1;
}
else{
R=X52is_a(_t1,_t2);
}
/*FI]*/
}
/*FI]*/
return R;
}
T0* r264look_up_for(T264* C,T0* a1,T0* a2){
T0* R=NULL;
R=r63look_up_for((T63*)(r264base_class(C)),a1,a2);
return R;
}
/*No:TYPE_ARRAY.array_of*/
T0* r264run_type(T264* C){
T0* R=NULL;
/*[IF*/
if(r264is_run_type(C)){
R=(C)->_run_type_memory/*16*/;
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.expanded_initializer*/
T6 r264has_creation(T264* C,T0* a1){
T6 R=0;
/*[IF*/
if((C)==((void*)(r264run_type(C)))){
R=r63has_creation((T63*)(r264base_class(C)),a1);
}
else{
R=X52has_creation(r264run_type(C),a1);
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.jvm_method_flags*/
/*No:TYPE_ARRAY.is_boolean*/
/*No:TYPE_ARRAY.us_lower*/
/*No:TYPE_ARRAY.us_array*/
/*No:TYPE_ARRAY.is_generic*/
/*No:TYPE_ARRAY.jvm_xaload*/
/*No:TYPE_ARRAY.is_real*/
void r264with(T264* C,T0* a1,T0* a2,T0* a3){
C->_base_class_name=a1;
C->_generic_list=se_ma265(1,
a3);
C->_written_mark=a2;
{T264*n=malloc(sizeof(*n));
*n=M264;
r264final(n,a1,X52run_type(a3));
C->_run_type_memory=(T0*)n;
}
}
T0* r264jvm_root_descriptor(void){
if(fBC12jvm_root_descriptor==0){
fBC12jvm_root_descriptor=1;
{T7*n=malloc(sizeof(*n));
*n=M7;
r7make(n,12);
oBC12jvm_root_descriptor=(T0*)n;
}
r7extend(((T7*)oBC12jvm_root_descriptor),'L');
r7append(((T7*)oBC12jvm_root_descriptor),r264jvm_root_class());
r7extend(((T7*)oBC12jvm_root_descriptor),'\73');
}
return oBC12jvm_root_descriptor;}
/*No:TYPE_ARRAY.is_any*/
/*No:TYPE_ARRAY.is_basic_eiffel_expanded*/
/*No:TYPE_ARRAY.jvm_descriptor_in*/
/*No:TYPE_ARRAY.is_string*/
T6 r264is_native_array(T264* C){
T6 R=0;
T0* _tna=NULL;
_tna=(T0*)C;
if(NULL!=(_tna))switch(((T0*)_tna)->id) {
case 267:
break;
default:
_tna=NULL;
};R=(_tna)!=((void*)(NULL));
return R;
}
/*No:TYPE_ARRAY.is_integer*/
/*No:TYPE_ARRAY.is_anchored*/
/*No:TYPE_ARRAY.us_upper*/
T6 r264is_run_type(T264* C){
T6 R=0;
T0* _et=NULL;
/*[IF*/
if(((C)->_run_type_memory/*16*/)!=((void*)(NULL))){
R=1;
}
else{
_et=/*(IRF4.6array_of*/r265first(((T265*)((C)->_generic_list/*8*/)))/*)*/;
/*[IF*/
if((X52is_run_type(_et))&&((X52run_type(_et))==((void*)(_et)))){
C->_run_type_memory=(T0*)C;
R=1;
}
/*FI]*/
}
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_reference*/
T0*oBC264tmp_written_mark=NULL;
/*No:TYPE_ARRAY.is_none*/
/*No:TYPE_ARRAY.jvm_return_code*/
/*No:TYPE_ARRAY.jvm_target_descriptor_in*/
/*No:TYPE_ARRAY.fz_inako*/
/*No:TYPE_ARRAY.jvm_xastore*/
/*No:TYPE_ARRAY.is_like_argument*/
T2 r264jvm_stack_space(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
R=1;
/*FI]*/
return R;
}
/*No:TYPE_ARRAY.is_double*/
T2 r264jvm_expanded_from_reference(T0* a1){
T2 R=0;
return R;
}
void r264final(T264* C,T0* a1,T0* a2){
C->_base_class_name=a1;
C->_generic_list=se_ma265(1,
a2);
r7copy((T7*)(oBC264tmp_written_mark),((T0*)ms14_1990));
r7extend((T7*)(oBC264tmp_written_mark),'\133');
r7append((T7*)(oBC264tmp_written_mark),X52written_mark(a2));
r7extend((T7*)(oBC264tmp_written_mark),'\135');
C->_written_mark=r86item(oBC264tmp_written_mark);
C->_run_type_memory=(T0*)C;
}
/*No:REAL_CONSTANT.static_value*/
/*No:REAL_CONSTANT.is_static*/
/*No:REAL_CONSTANT.can_be_dropped*/
/*No:REAL_CONSTANT.is_manifest_string*/
/*No:REAL_CONSTANT.start_position*/
/*No:REAL_CONSTANT.to_string*/
T0* r177add_comment(T177* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T234*n=malloc(sizeof(*n));
*n=M234;
r234make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
/*No:REAL_CONSTANT.compile_target_to_jvm*/
T2 r177to_integer(T177* C){
T2 R=0;
r177error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:REAL_CONSTANT.use_current*/
/*No:REAL_CONSTANT.jvm_branch_if_true*/
/*No:REAL_CONSTANT.to_runnable*/
T2 r177compile_to_jvm_into(T177* C,T0* a1){
T2 R=0;
/*[IF*/
if(X52is_real(a1)){
r28opcode_push_as_float((T28*)(oBC12code_attribute),(C)->_to_string/*8*/);
R=1;
}
else if(X52is_double(a1)){
r28opcode_push_as_double((T28*)(oBC12code_attribute),(C)->_to_string/*8*/);
R=2;
}
else{
R=r177standard_compile_to_jvm_into(C,a1);
}
/*FI]*/
return R;
}
T2 r177isa_dca_inline_argument(void){
T2 R=0;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}
/*No:REAL_CONSTANT.is_pre_computable*/
/*No:REAL_CONSTANT.fz_iinaiv*/
int fBC177result_type=0;
T0*oBC177result_type=NULL;
T0* r177result_type(void){
if(fBC177result_type==0){
fBC177result_type=1;
{T275*n=malloc(sizeof(*n));
*n=M275;
r275make(n,NULL);
oBC177result_type=(T0*)n;
}
}
return oBC177result_type;}
void r177error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
void r177make(T177* C,T0* a1,T0* a2){
C->_start_position=a1;
C->_to_string=a2;
}
/*No:REAL_CONSTANT.compile_to_jvm_assignment*/
/*No:REAL_CONSTANT.is_current*/
/*No:REAL_CONSTANT.unary_minus*/
T2 r177standard_compile_to_jvm_into(T177* C,T0* a1){
T2 R=0;
/*[IRF3.6compile_to_jvm*/{T177* C1=C;
r28opcode_push_as_float((T28*)(oBC12code_attribute),(C1)->_to_string/*8*/);
}/*]*/
R=X52jvm_convert_to(/*(IRF4.4run_type*/((T0*)((T275*)r177result_type()))/*)*/,a1);
return R;
}
/*No:REAL_CONSTANT.is_void*/
/*No:REAL_CONSTANT.compile_to_jvm_old*/
/*No:REAL_CONSTANT.jvm_assign*/
/*No:REAL_CONSTANT.jvm_branch_if_false*/
/*No:REAL_CONSTANT.compile_to_jvm*/
/*No:REAL_CONSTANT.afd_check*/
/*No:REAL_CONSTANT.is_result*/
/*No:LOCAL_NAME2.static_value*/
/*No:LOCAL_NAME2.is_static*/
/*No:LOCAL_NAME2.is_manifest_string*/
/*No:LOCAL_NAME2.start_position*/
T0* r184add_comment(T184* C,T0* a1){
T0* R=NULL;
/*[IF*/
if(((a1)==((void*)(NULL)))||((/*(IRF4.6count*/r73count(((T73*)((((T85*)a1))->_list/*4*/)))/*)*/)==(0))){
R=(T0*)C;
}
else{
{T234*n=malloc(sizeof(*n));
*n=M234;
r234make(n,(T0*)C,a1);
R=(T0*)n;
}
}
/*FI]*/
return R;
}
T2 r184to_integer(T184* C){
T2 R=0;
r184error((C)->_start_position/*4*/,((T0*)ms13_45846));
return R;
}
/*No:LOCAL_NAME2.rank*/
/*No:LOCAL_NAME2.use_current*/
T2 r184jvm_branch_if_true(T184* C){
T2 R=0;
r184compile_to_jvm(C);
R=r28opcode_ifne((T28*)(oBC12code_attribute));
return R;
}
T0* r184to_runnable(T184* C,T0* a1){
T0* R=NULL;
T0* _lvl=NULL;
T0* _rf=NULL;
_rf=r22top_rf((T22*)(oBC12small_eiffel));
_lvl=X27local_vars(_rf);
/*[IF*/
if(((C)->_local_var_list/*12*/)==((void*)(_lvl))){
R=(T0*)C;
}
else{
{T184*n=malloc(sizeof(*n));
*n=M184;
r184refer_to(n,(C)->_start_position/*4*/,_lvl,(C)->_rank/*8*/);
R=(T0*)n;
}
}
/*FI]*/
/*[IRF3.3set_is_used*/((((T187*)((T187*)(/*(IRF4.6name*/r189item(((T189*)((((T182*)_lvl))->_flat_list/*8*/)),(C)->_rank/*8*/)/*)*/))))->_is_used)=(1);
/*]*/
return R;
}
T2 r184compile_to_jvm_into(T184* C,T0* a1){
T2 R=0;
R=r184standard_compile_to_jvm_into(C,a1);
return R;
}
/*No:LOCAL_NAME2.is_pre_computable*/
/*No:LOCAL_NAME2.fz_iinaiv*/
T0* r184result_type(T184* C){
T0* R=NULL;
R=r182type((T182*)((C)->_local_var_list/*12*/),(C)->_rank/*8*/);
return R;
}
void r184standard_compile_target_to_jvm(T184* C){
r184compile_to_jvm(C);
X52jvm_check_class_invariant(r184result_type(C));
}
void r184compile_to_jvm_assignment(T184* C,T0* a1){
T2 _jvm_offset=0;
T2 _space=0;
_jvm_offset=r24local_offset_of((T24*)(oBC12jvm),(T0*)C);
_space=X109compile_to_jvm_into((((T287*)a1))->_right_side/*8*/,X52run_type(r184result_type(C)));
X52jvm_write_local(X52run_type(r184result_type(C)),_jvm_offset);
}
/*No:LOCAL_NAME2.compile_to_jvm_old*/
void r184jvm_assign(T184* C){
T2 _jvm_offset=0;
_jvm_offset=r24local_offset_of((T24*)(oBC12jvm),(T0*)C);
X52jvm_write_local(X52run_type(r184result_type(C)),_jvm_offset);
}
T2 r184jvm_branch_if_false(T184* C){
T2 R=0;
r184compile_to_jvm(C);
R=r28opcode_ifeq((T28*)(oBC12code_attribute));
return R;
}
void r184compile_to_jvm(T184* C){
T2 _jvm_offset=0;
_jvm_offset=r24local_offset_of((T24*)(oBC12jvm),(T0*)C);
X52jvm_push_local(X52run_type(r184result_type(C)),_jvm_offset);
}
/*No:LOCAL_NAME2.is_result*/
/*No:LOCAL_NAME2.can_be_dropped*/
/*No:LOCAL_NAME2.compile_target_to_jvm*/
/*No:LOCAL_NAME2.local_var_list*/
/*No:LOCAL_NAME2.isa_dca_inline_argument*/
void r184refer_to(T184* C,T0* a1,T0* a2,T2 a3){
C->_start_position=a1;
C->_local_var_list=a2;
C->_rank=a3;
}
void r184error(T0* a1,T0* a2){
r21add_position(a1);
r21error((T21*)(oBC12eh),a2);
}
/*No:LOCAL_NAME2.is_current*/
T2 r184standard_compile_to_jvm_into(T184* C,T0* a1){
T2 R=0;
r184compile_to_jvm(C);
R=X52jvm_convert_to(X52run_type(r184result_type(C)),a1);
return R;
}
/*No:LOCAL_NAME2.is_void*/
/*No:LOCAL_NAME2.afd_check*/
/*No:RUN_FEATURE_7.us_copy*/
/*No:RUN_FEATURE_7.rescue_compound*/
void r387fall_down(T387* C){
T0* _rf=NULL;
T0* _sub_name=NULL;
T0* _sub_bc=NULL;
T0* _current_bc=NULL;
T0* _sub_rc=NULL;
T0* _current_rc=NULL;
T2 _i=0;
T0* _running=NULL;
_current_rc=X52run_class((C)->_current_type/*4*/);
_running=(((T23*)_current_rc))->_running/*12*/;
/*[IF*/
if((_running)!=((void*)(NULL))){
_current_bc=X52base_class((C)->_current_type/*4*/);
_i=(((T340*)_running))->_lower/*12*/;
while (!((_i)>((((T340*)_running))->_upper/*8*/))) {
_sub_rc=r340item(((T340*)_running),_i);
/*[IF*/
if((_sub_rc)!=((void*)(_current_rc))){
_sub_bc=X52base_class((((T23*)_sub_rc))->_current_type/*0*/);
_sub_name=r63new_name_of(((T63*)_sub_bc),_current_bc,(C)->_name/*16*/);
_rf=r23get_feature(((T23*)_sub_rc),_sub_name);
}
/*FI]*/
_i=(_i)+(1);
}
}
/*FI]*/
}
/*No:RUN_FEATURE_7.use_current_state*/
/*No:RUN_FEATURE_7.actuals_clients*/
/*No:RUN_FEATURE_7.ucs_false*/
/*No:RUN_FEATURE_7.is_static*/
T0* r387start_position(T387* C){
T0* R=NULL;
R=r295start_position((T295*)((C)->_base_feature/*32*/));
return R;
}
void r387routine_mapping_jvm(T387* C){
T2 _stack_level=0;
T2 _idx=0;
T0* _ct=NULL;
T0* _rt=NULL;
_ct=(C)->_current_type/*4*/;
r24push_target_as_target((T24*)(oBC12jvm));
_stack_level=-((1)+(r24push_arguments((T24*)(oBC12jvm))));
_rt=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if((_rt)!=((void*)(NULL))){
_stack_level=(_stack_level)+(X52jvm_stack_space(_rt));
}
/*FI]*/
_idx=r29idx_methodref((T29*)(oBC12constant_pool),(T0*)C);
r23jvm_invoke((T23*)(X52run_class(_ct)),_idx,_stack_level);
}
T6 r387use_current(T387* C){
T6 R=0;
{int z1=(C)->_use_current_state/*28*/;
if((14==z1)){
R=1;
}
else
if((13==z1)){
}
else
if((15==z1)){
C->_use_current_state=16;
r387compute_use_current(C);
R=r387use_current(C);
}
else {R=1;
}}
return R;
}
void r387mapping_jvm(T387* C){
T0* _bcn=NULL;
T0* _native=NULL;
T0* _bf=NULL;
_bf=(C)->_base_feature/*32*/;
_native=(((T295*)_bf))->_native/*40*/;
_bcn=((T70*)(((T63*)((((T295*)_bf))->_base_class/*4*/))->_name/*24*/))->_to_string/*0*/;
X293jvm_mapping_procedure(_native,(T0*)C,_bcn,X50to_string(/*(IRF4.6first_name*/r87item(((T87*)((((T295*)_bf))->_names/*8*/)),1)/*)*/));
}
void r387routine_afd_check(T387* C){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r367afd_check((T367*)((C)->_require_assertion/*20*/));
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219afd_check((T219*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*No:RUN_FEATURE_7.ucs_not_computed*/
/*No:RUN_FEATURE_7.is_pre_computable*/
void r387std_compute_use_current(T387* C){
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
/*[IF*/
if(r367use_current((T367*)((C)->_require_assertion/*20*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
/*[IF*/
if(r219use_current((T219*)((C)->_ensure_assertion/*24*/))){
C->_use_current_state=14;
}
/*FI]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_use_current_state/*28*/)==(16)){
C->_use_current_state=13;
}
/*FI]*/
}
T0* r387run_class(T387* C){
T0* R=NULL;
R=X52run_class((C)->_current_type/*4*/);
return R;
}
/*No:RUN_FEATURE_7.result_type*/
/*No:RUN_FEATURE_7.base_feature*/
/*No:RUN_FEATURE_7.static_value_mem*/
/*No:RUN_FEATURE_7.ensure_assertion*/
T2 r387jvm_local_variable_offset(T387* C,T0* a1){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
R=(R)+(r182jvm_offset_of((T182*)(/*(IRF4.1local_vars*/NULL/*)*/),a1));
return R;
}
T2 r387arg_count(T387* C){
T2 R=0;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=/*(IRF4.6count*/(((T195*)(((T191*)((C)->_arguments/*36*/))->_flat_list/*8*/)))->_upper/*12*//*)*/;
}
/*FI]*/
return R;
}
/*No:RUN_FEATURE_7.fz_19*/
T6 r387is_exported_in(T387* C,T0* a1){
T6 R=0;
R=r103gives_permission_to((T103*)(r387clients(C)),a1);
return R;
}
/*No:RUN_FEATURE_7.us_raise_exception*/
/*No:RUN_FEATURE_7.arguments*/
T2 r387jvm_argument_offset(T387* C,T0* a1){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
R=(R)+(r191jvm_offset_of((T191*)((C)->_arguments/*36*/),a1));
return R;
}
/*No:RUN_FEATURE_7.can_be_dropped*/
void r387initialize(T387* C){
T0* _n=NULL;
_n=X50to_string(/*(IRF4.6first_name*/r87item(((T87*)(((T295*)((C)->_base_feature/*32*/))->_names/*8*/)),1)/*)*/);
C->_arguments=((T295*)((C)->_base_feature/*32*/))->_arguments/*20*/;
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
/*[IF*/
if(!(r191is_runnable((T191*)((C)->_arguments/*36*/),(C)->_current_type/*4*/))){
{T191*n=malloc(sizeof(*n));
*n=M191;
r191with(n,(C)->_arguments/*36*/,(C)->_current_type/*4*/);
C->_arguments=(T0*)n;
}
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r76require_check((T76*)(oBC12run_control))){
/*[IF*/
if(((((T0*)ms14_1812))==((void*)(X50to_string((C)->_name/*16*/))))&&(X52is_expanded((C)->_current_type/*4*/))){
}
else{
C->_require_assertion=r295run_require((T0*)C);
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
C->_ensure_assertion=r295run_ensure((T0*)C);
}
/*FI]*/
/*[IF*/
if((((T0*)ms14_32955))==((void*)(_n))){
/*[IRF3.3set_used*/((((T362*)((T362*)(oBC12exceptions_handler))))->_used)=(1);
/*]*/
}
/*FI]*/
}
/*No:RUN_FEATURE_7.require_assertion*/
/*No:RUN_FEATURE_7.update_tmp_jvm_descriptor*/
T2 r387jvm_max_locals(T387* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}
void r387jvm_opening(T387* C){
r387method_info_start(C);
r387jvm_define_opening(C);
}
void r387jvm_define_opening(T387* C){
T0* _t=NULL;
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219compile_to_jvm_old((T219*)((C)->_ensure_assertion/*24*/));
}
/*FI]*/
}
/*FI]*/
/*[IF*/
if(((C)->_require_assertion/*20*/)!=((void*)(NULL))){
r367compile_to_jvm((T367*)((C)->_require_assertion/*20*/));
}
/*FI]*/
}
void r387jvm_define_closing(T387* C){
/*[IF*/
if(r76ensure_check((T76*)(oBC12run_control))){
/*[IF*/
if(((C)->_ensure_assertion/*24*/)!=((void*)(NULL))){
r219compile_to_jvm((T219*)((C)->_ensure_assertion/*24*/),1);
/*[IRF3.4opcode_pop*/r28opcode((T28*)(oBC12code_attribute),87,-(1));
/*]*/
}
/*FI]*/
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
}
/*No:RUN_FEATURE_7.clients_memory*/
/*No:RUN_FEATURE_7.current_type*/
void r387add_client(T387* C,T0* a1){
T2 _i=0;
/*[IF*/
if(((C)->_actuals_clients/*12*/)==((void*)(NULL))){
{T343*n=malloc(sizeof(*n));
*n=M343;
r343with_capacity(n,4);
C->_actuals_clients=(T0*)n;
}
r343add_last((T343*)((C)->_actuals_clients/*12*/),a1);
}
else{
_i=r343fast_index_of((T343*)((C)->_actuals_clients/*12*/),a1);
/*[IF*/
if((_i)>(((T343*)((C)->_actuals_clients/*12*/))->_upper/*8*/)){
r343add_last((T343*)((C)->_actuals_clients/*12*/),a1);
}
/*FI]*/
}
/*FI]*/
r23add_client((T23*)(r387run_class(C)),a1);
}
/*No:RUN_FEATURE_7.ucs_in_computation*/
void r387compute_use_current(T387* C){
/*[IF*/
if(r295use_current((T295*)((C)->_base_feature/*32*/))){
C->_use_current_state=14;
}
else{
r387std_compute_use_current(C);
}
/*FI]*/
}
void r387method_info_start(T387* C){
T2 _flags=0;
_flags=X52jvm_method_flags((C)->_current_type/*4*/);
r39start((T39*)(oBC12method_info),_flags,X50to_key((C)->_name/*16*/),r387jvm_descriptor(C));
}
void r387make(T387* C,T0* a1,T0* a2,T0* a3){
C->_current_type=a1;
C->_name=a2;
C->_base_feature=a3;
/*[IRF3.5add_rf*/r333put(((T333*)(((T23*)(r387run_class(C)))->_feature_dictionary/*24*/)),(T0*)C,X50to_key(a2));
/*]*/
r22incr_magic_count((T22*)(oBC12small_eiffel));
C->_use_current_state=15;
r22push((T22*)(oBC12small_eiffel),(T0*)C);
r387initialize(C);
r22pop((T22*)(oBC12small_eiffel));
}
/*No:RUN_FEATURE_7.ucs_true*/
/*No:RUN_FEATURE_7.routine_body*/
void r387jvm_define(T387* C){
T0* _bcn=NULL;
T0* _native=NULL;
T0* _bf=NULL;
_bf=(C)->_base_feature/*32*/;
_native=(((T295*)_bf))->_native/*40*/;
_bcn=((T70*)(((T63*)((((T295*)_bf))->_base_class/*4*/))->_name/*24*/))->_to_string/*0*/;
X293jvm_define_procedure(_native,(T0*)C,_bcn,X50to_string(/*(IRF4.6first_name*/r87item(((T87*)((((T295*)_bf))->_names/*8*/)),1)/*)*/));
}
/*No:RUN_FEATURE_7.name*/
/*No:RUN_FEATURE_7.local_vars*/
T2 r387jvm_result_offset(T387* C){
T2 R=0;
R=X52jvm_stack_space((C)->_current_type/*4*/);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
R=(R)+(r191jvm_stack_space((T191*)((C)->_arguments/*36*/)));
}
/*FI]*/
/*[IF*/
/*AF*//*AE*/
/*FI]*/
return R;
}
void r387routine_update_tmp_jvm_descriptor(T387* C){
T0* _rt=NULL;
T0* _ct=NULL;
r7extend((T7*)(oBC27tmp_jvm_descriptor),'\50');
_ct=(C)->_current_type/*4*/;
X52jvm_target_descriptor_in(_ct,oBC27tmp_jvm_descriptor);
/*[IF*/
if(((C)->_arguments/*36*/)!=((void*)(NULL))){
r191jvm_descriptor_in((T191*)((C)->_arguments/*36*/),oBC27tmp_jvm_descriptor);
}
/*FI]*/
_rt=/*(IRF4.1result_type*/NULL/*)*/;
/*[IF*/
if((_rt)==((void*)(NULL))){
r7append((T7*)(oBC27tmp_jvm_descriptor),((T0*)ms13_260));
}
else{
_rt=X52run_type(_rt);
r7extend((T7*)(oBC27tmp_jvm_descriptor),'\51');
X52jvm_descriptor_in(_rt,oBC27tmp_jvm_descriptor);
}
/*FI]*/
}
void r387jvm_field_or_method(T387* C){
T0* _bcn=NULL;
T0* _native=NULL;
T0* _bf=NULL;
_bf=(C)->_base_feature/*32*/;
_native=(((T295*)_bf))->_native/*40*/;
_bcn=((T70*)(((T63*)((((T295*)_bf))->_base_class/*4*/))->_name/*24*/))->_to_string/*0*/;
X293jvm_add_method_for_procedure(_native,(T0*)C,_bcn,X50to_string(/*(IRF4.6first_name*/r87item(((T87*)((((T295*)_bf))->_names/*8*/)),1)/*)*/));
}
/*No:RUN_FEATURE_7.afd_check*/
void r387jvm_closing(T387* C){
r387jvm_define_closing(C);
/*[IRF3.2opcode_return*//*[IRF3.6add_u1*/{T2 b1=177;
r48add_last((T48*)(oBC28code),b1);
}/*]*/
/*]*/
r39finish((T39*)(oBC12method_info));
}
T0* r387clients(T387* C){
T0* R=NULL;
T0* _bfbc=NULL;
T0* _bc=NULL;
/*[IF*/
if(((C)->_clients_memory/*8*/)==((void*)(NULL))){
_bc=X52base_class((C)->_current_type/*4*/);
_bfbc=((T295*)((C)->_base_feature/*32*/))->_base_class/*4*/;
/*[IF*/
if((_bc)==((void*)(_bfbc))){
R=((T295*)((C)->_base_feature/*32*/))->_clients/*16*/;
}
else{
R=r63clients_for(((T63*)_bc),(C)->_name/*16*/);
}
/*FI]*/
C->_clients_memory=R;
}
else{
R=(C)->_clients_memory/*8*/;
}
/*FI]*/
return R;
}
T0* r387jvm_descriptor(T387* C){
T0* R=NULL;
/*[IRF3.3clear*/((((T7*)((T7*)(oBC27tmp_jvm_descriptor))))->_count)=(0);
/*]*/
/*[IRF3.4update_tmp_jvm_descriptor*/r387routine_update_tmp_jvm_descriptor(C);
/*]*/
R=oBC27tmp_jvm_descriptor;
return R;
}